package com.xuecheng.api.cms;


import com.xuecheng.framework.domain.cms.CmsPage;
import com.xuecheng.framework.domain.cms.request.QueryPageRequest;
import com.xuecheng.framework.domain.cms.response.CmsPageResult;
import com.xuecheng.framework.domain.cms.response.CmsPostPageResult;
import com.xuecheng.framework.domain.course.response.CoursePublishResult;
import com.xuecheng.framework.model.response.QueryResponseResult;
import com.xuecheng.framework.model.response.ResponseResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import javafx.geometry.Pos;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.ArrayList;

@Api(value = "cms页面管理系统", tags = {"cms页面管理接口，提供增，删，改，查"})
public interface CmsPageControllerApi {
    /**
     * 分页查询
     *
     * @param page             第几页
     * @param size             每页显示多少
     * @param queryPageRequest 查询参数
     * @return QueryResponseResult
     */
    @ApiOperation("分页查询CmsPage页面列表")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "page", value = "页码", required = true, paramType = "path", dataType = "int"),
            @ApiImplicitParam(name = "size", value = "每页显示的个数", required = true, paramType = "path", dataType = "int"),
    })
    QueryResponseResult findList(int page, int size, QueryPageRequest queryPageRequest);

    /**
     * 添加一个CmsPage
     *
     * @param cmsPage 前端传入CmsPage对象
     * @return CmsPageResult 返回新增的CmsPage和操作状态
     */
    @ApiOperation("添加一个CmsPage页面")
    CmsPageResult addCmsPage(CmsPage cmsPage);

    /**
     * 保存一个CmsPage,主要给课程管理预览的时候远程调用
     *
     * @param cmsPage 前端传入CmsPage对象
     * @return CmsPageResult 返回新增的CmsPage和操作状态
     */
    @ApiOperation("添加一个CmsPage页面")
    CmsPageResult saveCmsPage(CmsPage cmsPage);

    /**
     * 根据ID查询一个CmsPage页面
     *
     * @param id 前端传入的CmsPageID
     * @return 查询出的页面
     */
    @ApiOperation("根据ID查询一个CmsPage页面,主要给课程管理预览的时候远程调用")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "id", value = "CmsPage页面id", required = true, paramType = "path", dataType = "String")
    })
    CmsPage FindById(String id);

    /**
     * 修改CmsPage
     *
     * @param id      要修改的CmsPage的ID
     * @param cmsPage 前端至少传入一个CmsPage id
     * @return 修改成功后的数据
     */
    @ApiOperation("修改CmsPage页面信息")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "id", value = "CmsPage页面id", required = true, paramType = "path", dataType = "String")
    })
    CmsPageResult edit(String id, CmsPage cmsPage);

    /**
     * 根据id删除CmsPage
     *
     * @param id 前台传递CmsPage的id
     * @return 响应结果
     */
    @ApiOperation("根据Id删除CmsPage页面")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "id", value = "CmsPage的Id", required = true, paramType = "path", dataType = "String ")
    })
    ResponseResult delete(String id);

    /**
     * 页面发布接口
     *
     * @param pageId 需要发布的页面id
     * @return 响应
     */
    @ApiOperation("发布一个CmsPage页面")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "pageId", value = "CmsPage的id", required = true, paramType = "path", dataType = "String")
    })
    ResponseResult postPage(String pageId);

    /**
     *一键发布Cms页面,给课程发布的时候调用调用
     */
    @ApiOperation("一键发布Cms页面,给课程发布的时候调用调用")
    CmsPostPageResult postPageQuick(CmsPage cmsPage);
}
